2 CLS:PRINTCHR$(1);CHR$(2);"llitsd le a magnt!";:FOR N=1 TO 2222:NEXT
5 GOSUB 3000
10 CLEAR 200:DEFINT A-Z
20 CLS:PRINT$4,12,CHR$(2);"OTHELLO";CHR$(18)
30 PRINT$8,0,"Velem akarsz jtszani? (i/n)";
35 IF INKEY$<>"" THEN 35
36 IF INKEY$="" THEN 36
37 F$=INKEY$
38 IF F$="i"OR F$="I"OR F$="N"ORF$="n" THEN PRINT"   ";F$ ELSE GOTO30
40 IF F$="n" OR F$="N" THEN F$="":GOTO 100
50 PRINT$10,0,"x vagy o legyek?";
52 IF INKEY$<>"" THEN 52
53 IF INKEY$="" THEN 53
54 F$=INKEY$
60 IF F$="X" THEN F$="x"
70 IF F$="O" THEN F$="o"
80 IF F$<>"x" AND F$<>"o" GOTO 50 ELSE PRINT"   ";F$
100 PRINT$15,0,"     ";CHR$(4);" Brmely gomb inditja a jtkot";CHR$(20);
110 IF INKEY$="" GOTO 110
120 PRINT$0,40,CHR$(7)
130 N=8
140 DIM T$(N,N),FT(N,N)
150 FOR I=1 TO N:FOR J=1 TO N:T$(I,J)="":NEXT J,I
160 CLS:PRINT$0,40,CHR$(2)
170 FOR I=24 TO 18*N+24 STEP 18
180 FOR J=179 TO 179-12*N STEP -1
190 SET(I,J)
200 NEXT J,I
210 FOR J=179 TO 179-12*N STEP -12
220 FOR I=24 TO 18*N+24 STEP 1
230 SET(I,J)
240 NEXT I,J
250 PRINT$0,40,CHR$(18)
260 FOR I=1 TO N:PRINT$I,2,CHR$(I+64):PRINT$0,3*I,I:NEXT I
270 PRINT$0,40,CHR$(2),CHR$(6)
280 G$="x":I=N/2:J=N/2:GOSUB 2600
290 I=N/2+1:J=N/2+1:GOSUB 2600
300 G$="o":I=N/2:J=N/2+1:GOSUB 2600
310 I=N/2+1:J=N/2:GOSUB 2600
320 G$="x":S$="o":X=2:O=2
400 IF X+O=N*N GOTO 700
405 IF X=0 OR O=0 THEN 700
410 IF F$=G$  GOTO 1000
415 POKE16452,183
420 PRINT$14,0,G$;:INPUT I$
421 PRINT$13,0,CHR$(2);"                                ";
422 IF I$="0" IF P=0 THEN P=1:GOTO 515:ELSE 700 ELSE P=0
423 IF LEN(I$)<>2 THEN 420
425 J$=RIGHT$(I$,1)
440 I0=ASC(I$)-64:J0=VAL(J$)
460 P=0
470 IF I0<1 OR I0>N OR J0<1 OR J0>N GOTO 520
480 FL=1:GOSUB 2000
490 IF K=0 GOTO 520
500  GS$=G$:G$=S$:S$=GS$
510 GOTO 400
515  T0=1:T$=F$:F$=G$:PRINT$12,15,CHR$(18);" Ellenrzs";CHR$(2);:GOSUB 1000:PRINT$12,2,"            ";:F$=T$:IF NO=1 THEN 500
520 PRINT$13,0,CHR$(18);"rvnytelen lps: ";I$;CHR$(2)
530 GOTO 420
700 PRINT$12,0,CHR$(18);"                                   ";
705 IF F$="x" AND X>O OR F$="o" AND O>X PRINT$13,0,CHR$(18);"TALN MAJD LEGKZELEBB !!"
710 IF F$<>"" AND X=O PRINT$13,0,CHR$(18);"IZGALMAS JTK VOLT !!"
720 IF F$="x" AND X<O OR F$="o" AND O<X PRINT$13,0,CHR$(18);"GRATULLOK A GYZELEMHEZ !"
730 PRINT$14,0,CHR$(18);"Jhet a kvetkez jtk ? (i/n)";
732 IF INKEY$<>"" THEN 732
733 IF INKEY$="" THEN 733
735 F$=INKEY$
740 IF F$="n" OR F$="N"  THEN CLS:PRINT$8,0,CHR$(2);"Inditsd el a magnt!";CHR$(1);:LOAD
745 PRINT$14,0,"rdeklik a szablyok ? (i/n)        ";
750 IF INKEY$<>"" THEN 750
755 IF INKEY$="" THEN 755
758 F$=INKEY$
760 IF F$="N" OR F$="n" THEN 10 ELSE 5
1000 FL=0
1005 IF T0=0 THEN PRINT$12,2,CHR$(18);"Trelmet krek,gondolkozom.";CHR$(2);
1010 KM=0:I=0:J=0
1020 FOR I0=1 TO N STEP N-1:FOR J0=1 TO N STEP N-1
1030 GOSUB 2000
1040 IF K>KM THEN I=I0:J=J0:KM=K
1050 NEXT J0,I0
1060 IF KM>0 GOTO 1900
1100 FOR I0=2 TO N-1:FOR J0=1 TO N STEP N-1
1110 FT(I0,J0)=1:IF T$(I0,J0)<>"" GOTO 1145
1120 IF T$(I0-1,J0)<>"" THEN KI=-1:KJ=0:GOSUB 1700
1130 IF T$(I0+1,J0)<>"" THEN KI=1:KJ=0:GOSUB 1700
1140 IF FT(I0,J0)>=0 GOSUB 2000
1141 IF K>KM THEN I=I0:J=J0:KM=K
1145 NEXT J0,I0
1150 FOR I0=1 TO N STEP N-1:FOR J0=2 TO N-1
1160 FT(I0,J0)=1:IF T$(I0,J0)<>"" GOTO 1195
1170 IF T$(I0,J0-1)<>"" THEN KI=0:KJ=-1:GOSUB 1700
1180 IF T$(I0,J0+1)<>"" THEN KI=0:KJ=1:GOSUB 1700
1190 IF FT(I0,J0)>=0 GOSUB 2000
1191 IF K>KM THEN I=I0:J=J0:KM=K
1195 NEXT J0,I0
1199 IF KM>0 GOTO 1900
1200 FOR I0=3 TO N-2:FOR J0=3 TO N-2
1210 GOSUB 2000
1220 IF K>KM THEN I=I0:J=J0:KM=K
1230 NEXT J0,I0
1240 IF KM>0 GOTO 1900
1250 IF T$(1,1)<>"" THEN I0=2:J0=2:GOSUB 2000
1255 IF K>KM THEN I=I0:J=J0:KM=K
1260 IF T$(1,N)<>"" THEN I0=2:J0=N-1:GOSUB 2000
1265 IF K>KM THEN I=I0:J=J0:KM=K
1270 IF T$(N,1)<>"" THEN I0=N-1:J0=2:GOSUB 2000
1275 IF K>KM THEN I=I0:J=J0:KM=K
1280 IF T$(N,N)<>"" THEN I0=N-1:J0=N-1:GOSUB 2000
1285 IF K>KM THEN I=I0:J=J0:KM=K
1300 FOR I0=3 TO N-2:FOR J0=2 TO N-1 STEP N-3
1310 GOSUB 2000
1320 IF K>KM THEN I=I0:J=J0:KM=K
1330 NEXT J0,I0
1340 FOR I0=2 TO N-1 STEP N-3:FOR J0=3 TO N-2
1350 GOSUB 2000
1360 IF K>KM THEN I=I0:J=J0:KM=K
1370 NEXT J0,I0
1380 IF KM>0 GOTO 1900
1400 FOR I0=2 TO N-1:FOR J0=1 TO N STEP N-1
1410 IF FT(I0,J0)<0 GOSUB 2000
1420 IF K>KM  THEN I=I0:J=J0:KM=K
1430 NEXT J0,I0
1440 FOR I0=1 TO N STEP N-1:FOR J0=2 TO N-1
1450 IF FT(I0,J0)<0 GOSUB 2000
1460 IF K>KM THEN I=I0:J=J0:KM=K
1470 NEXT J0,I0
1480 IF KM>0 GOTO 1900
1500 IF T$(1,1)="" THEN I0=2:J0=2:GOSUB 2000
1505 IF K>KM THEN I=I0:J=J0:KM=K
1510 IF T$(1,N)="" THEN I0=2:J0=N-1:GOSUB 2000
1515 IF K>KM THEN I=I0:J=J0:KM=K
1520 IF T$(N,1)="" THEN I0=N-1:J0=2:GOSUB 2000
1525 IF K>KM THEN I=I0:J=J0:KM=K
1530 IF T$(N,N)="" THEN I0=N-1:J0=N-1:GOSUB 2000
1535 IF K>KM THEN I=I0:J=J0:KM=K
1540 IF KM>0 THEN  1900
1550 IF T0=0 THEN PRINT$12,2,"passz             ":FOR W=1 TO 1000:NEXT: ELSE T0=0:NO=1:RETURN
1560 IF P=0 THEN P=1:GOTO 500:ELSE 700
1700 K=0:I1=I0+KI:J1=J0+KJ
1710 IF T$(I1,J1)=G$ THEN I1=I1+KI:J1=J1+KJ:ELSE 1730
1720 IF I1<1 OR I1>N OR J1<1 OR J1>N THEN FT(I0,J0)=0:RETURN
1730 IF T$(I1,J1)="" RETURN
1740 IF T$(I1,J1)=S$ THEN I1=I1+KI:J1=J1+KJ:ELSE 1760
1750 IF I1<1 OR I1>N OR J1<1 OR J1>N THEN FT(I0,J0)=-FT(I0,J0):RETURN:ELSE 1740
1760 IF T$(I1,J1)="" THEN FT(I0,J0)=-FT(I0,J0):RETURN
1770 IF T$(I1,J1)=G$ THEN I1=I1+KI:J1=J1+KJ:ELSE 1790
1780 IF I1<1 OR I1>N OR J1<1 OR J1>N IF T$(I0+KI,J0+KJ)=S$ THEN FT(I0,J0)=0:RETURN:ELSE FT(I0,J0)=-FT(I0,J0):RETURN
1790 IF T$(I1,J1)=S$ THEN FT(I0,J0)=-FT(I0,J0):RETURN
1800 IF T$(I0+KI,J0+KJ)=G$ THEN FT(I0,J0)=-FT(I0,J0)
1810 RETURN
1900 IF T0=1 THEN T0=0:NO=0:RETURN
1902 PRINT$12,2,"               ";
1905 FOR L=1 TO 10
1910 PRINT$I,3*J+1,G$:FOR M=1 TO 20:NEXT M
1920 PRINT$I,3*J+1," ":FOR M=1 TO 20:NEXT M
1930 NEXT L
1940 I0=I:J0=J:FL=1:GOSUB 2000
1950 G$=S$:S$=F$
1955 P=0
1960 GOTO 400
2000 K=0
2010 IF T$(I0,J0)<>"" RETURN
2020 IF I0>1 AND J0>1 IF T$(I0-1,J0-1)=S$ THEN KI=-1:KJ=-1:GOSUB 2500
2030 IF I0>1 IF T$(I0-1,J0)=S$ THEN KI=-1:KJ=0:GOSUB 2500
2040 IF I0>1 AND J0<N IF T$(I0-1,J0+1)=S$ THEN KI=-1:KJ=1:GOSUB 2500
2050 IF J0>1 IF T$(I0,J0-1)=S$ THEN KI=0:KJ=-1:GOSUB 2500
2060 IF J0<N IF T$(I0,J0+1)=S$ THEN KI=0:KJ=1:GOSUB 2500
2070 IF I0<N AND J0>1 IF T$(I0+1,J0-1)=S$ THEN KI=1:KJ=-1:GOSUB 2500
2080 IF I0<N IF T$(I0+1,J0)=S$ THEN KI=1:KJ=0:GOSUB 2500
2090 IF I0<N AND J0<N IF T$(I0+1,J0+1)=S$ THEN KI=1:KJ=1:GOSUB 2500
2100 IF K=0 OR FL=0 RETURN
2110 IF G$="x" THEN X=X+K:O=O-K+1
2120 IF G$="o" THEN X=X-K+1:O=O+K
2130 PRINT$3,3*(N+1)+1,X;TAB(3*(N+1)+8);"- x"
2140 PRINT$5,3*(N+1)+1,O;TAB(3*(N+1)+8);"- o"
2150 RETURN
2500 I1=I0+2*KI:J1=J0+2*KJ
2510 IF I1<1 OR I1>N OR J1<1 OR J1>N RETURN
2520 IF T$(I1,J1)=S$ THEN I1=I1+KI:J1=J1+KJ:GOTO 2510
2530 IF T$(I1,J1)="" RETURN
2540 IF K>0 THEN K=K-1
2550 IF KI=0 THEN K=K+ABS(J1-J0):ELSE K=K+ABS(I1-I0)
2560 IF FL=0 RETURN
2570 IF KI=0 THEN I=I0:FOR J=J0 TO J1-KJ STEP KJ:GOSUB 2600:NEXT J:ELSE J=J0:FOR I=I0 TO I1-KI STEP KI:GOSUB 2600:J=J+KJ:NEXT I
2580 RETURN
2600 T$(I,J)=G$
2610 PRINT$I,3*J+1,G$
2620 RETURN
3000 CLS:PRINT$0,8,CHR$(2);"O T H E L L O"
3010 PRINTCHR$(1);:PRINT"    Ezt a tbls jtkot sokan REVERSI    vagy FORDITGATS nven ismerik."
3020 PRINT"    Kt jtkos jtssza nyolcszor nyolcas ngyzetes tbln,ktszin (pl. egyik olda-ln piros,a msikon kk) korongokkal."
3025 PRINT"    Ha valamelyik jtkos kt figurja    kzrefogja az ellenfl nhny korongjt   vizszintes,fggleges vagy tls irnyban,ezeket sajt szinre vltoztatja."
3030 PRINT"    Felvltva tesznek korongokat a tbla  mezire,egyikk a korong piros,msikuk kkoldalval flfele.Fontos megkts,hogy    minden lpsnl legalbb egy ellensges   korongot t kell forditani."
3040 PRINT"     ";CHR$(4);" Brmely gombbal lapozhatsz";CHR$(20);
3050 IF INKEY$="" GOTO 3050
3060 CLS:PRINT$1,0,"    Ha a jtkosnak nincs rvnyes lpse,akkor (de csakis akkor) passzol.              A jtk akkor r vget,ha betelt a    tbla,vagy egyik flnek elfogytak a figu- ri,vagy ha egyik jtkos sem";
3070                              PRINT" tud lpni.Aznyer,akinek tbb figurja van a tbln."
3080 PRINT"    Ezzel a programmal a PRIMO ellen is   jtszhatsz, a kt szint az 'X',ill. az 'O'jelek helyettesitik.Mindig 'X' indul,     lpni a sor s oszlop megadsval (pl.C3),passzolni pedig '0'-val kell."
3090 PRINT$13,0,"             SOK SZERENCST!"
3095 PRINT$15,0,"     ";CHR$(4);" Brmely gombbal indithatsz";CHR$(20);
3098 IF INKEY$="" THEN 3098
3099 CLS
3100 RETURN
